<script src="../lib/jquery.js"></script>
<script>
// jQuery offers several utility methods in the $ namespace
$(function(){
	// $.trim(): Removes leading and trailing whitespace:
	console.log($.trim( "    lots of extra whitespace    " ));
	
	
	
	// $.each(): Iterates over arrays and objects:
	$.each([ "foo", "bar", "baz" ], function( idx, val ) {
	    console.log( "element " + idx + " is " + val );
	});
	 
	$.each({ foo: "bar", baz: "bim" }, function( k, v ) {
	    console.log( k + " : " + v );
	});
	
	
	
	// $.inArray(): Returns a value's index in an array, or -1 if the value is not in the array:
	var myArray = [ 1, 2, 3, 5 ]; 
	if ( $.inArray( 3, myArray ) !== -1 ) {
	    console.log( "found it!" );
	}
	
	
	
	// $.extend(): Changes the properties of the first object using the properties of subsequent objects:
	var firstObject = { foo: "bar", a: "b" };
	var secondObject = { foo: "baz" };	 
	var newObject = $.extend( firstObject, secondObject );
	 
	console.log( firstObject.foo +","+ firstObject.a ); // "baz"
	console.log( newObject.foo ); // "baz"
	
	// If you don't want to change any of the objects you pass to $.extend(), pass an empty object as the first argument:
	var firstObject = { foo: "bar", a: "b" };
	var secondObject = { foo: "baz" };
	 
	var newObject = $.extend( {}, firstObject, secondObject );
	 
	console.log( firstObject.foo ); // "bar"
	console.log( newObject.foo ); // "baz"
	
	
	
	// $.proxy(): Returns a function that will always run in the provided scope — that is, sets 
	// the meaning of this inside the passed function to the second argument.
	var myFunction = function() {
    	console.log( this );
	};
	var myObject = {
	    foo: "bar"
	};
	 
	myFunction(); // window	 
	var myProxyFunction = $.proxy( myFunction, myObject );	 
	myProxyFunction(); // myObject
	
	// If you have an object with methods, you can pass the object and the name of a method 
	// to return a function that will always run in the scope of the object.
	var myObject = {
		myFn: function() {
		    console.log( this );
		}
	};
		 
	$( "#foo" ).click( myObject.myFn ); // HTMLElement #foo
	$( "#foo" ).click( $.proxy( myObject, "myFn" ) ); // myObject	
});
</script>
<p id="foo">CLICK</p>